void f(int a[],int n)
{
	int dp[maxsize];// dp[i]表示以a[i]结尾的最大子序列和
	int Max=0,head=0,tail=0;
	for(int i=0;i<n;i++)
	{
		if(i==0)
			dp[i]=a[i];
		else
		{
			if(dp[i-1]<0)  //之前的最大子序列是负的，就舍弃
			{
				dp[i]=a[i];  //dp[i]更新为此结点
				head=i; //前面的舍弃，现在的结点设为头结点
			}
			else //之前的子序列是大于等于0的就加上
				dp[i]=dp[i-1]+a[i]; //如果加上此结点后dp[i]变大，则累加
		}
		if(dp[i]>Max)  //判断当前段子序列和与最大子序列和的大小
		{
			Max=dp[i];
			tail=i;//标记尾结点
		}
	}
	printf("起始于%d 终止于%d 元素个数 %d\n",head,tail,tail-head+1);
}


void f(int a[],int n){
	int dp[maxsize],max=0,head=0,tail=0;
	for(int i=0;i<n;i++){
		if(i==0)
			dp[i]=a[i];
		else{
			if(dp[i-1]<0){
				dp[i]=a[i];
				head=i;
			}else{
				dp[i]=dp[i-1]+a[i];
			}
		}
		if(dp[i]>max){
			max=dp[i];
			tail=i;
		}
	}

}